package com.zhxy.manager.service.impl;



import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zhxy.manager.dao.UserDao;
import com.zhxy.manager.entity.User;
import com.zhxy.manager.service.intf.UserService;
import com.zhxy.manager.utils.PassUtils;
import com.zhxy.manager.utils.StringUtils;
import com.zhxy.manager.vo.PageBean;
import com.zhxy.manager.vo.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpSession;

@Service
public class UserServiceImpl implements UserService {
    private static String key="IU3T+bigbvwTRy04q2C+6A==";
    @Autowired
    private UserDao dao;

    @Override
    public PageBean queryPage(String name, int page, int limit) {
        //1.验证 查询条件 如果为 "" 那么赋值为null
        if(!StringUtils.isNotEmpty(name)){
            name=null;
        }else{
            name="%"+name+"%";//包含  模糊查询
        }
        //2.分页
        PageHelper.startPage(page, limit);
        //3.获取分页结果
        PageInfo<User> pageInfo=new PageInfo<>(dao.selectWhere(name));
        //4.返回分页的数据
        return PageBean.bean(pageInfo.getTotal(), pageInfo.getList());
    }

    @Override
    public R login(User user, HttpSession session) {
        //1.验证参数
        if (user != null && StringUtils.isNotEmpty(user.getName(), user.getPassword())) {
            //2.校验 用户名是否存在
            User u = dao.selectByName(user.getName());
            //3.验证
            if (u != null) {
                //账号存储 比对密码  密文比较
                if(u.getPassword().equals(PassUtils.aesenc(key,user.getPassword()))){
                    //成功
                    session.setAttribute("user",u);
                    return R.ok();
                }
            }
        }
        return R.fail();
    }


    @Override
    public R save(User user) {
        //1.验证参数
        if(user!=null && StringUtils.isNotEmpty(user.getName(),user.getPassword())){
            //2.校验 用户名是否存在
            User u=dao.selectByName(user.getName());
            //3.验证
            if(u==null){
                //可以注册
                //4.把密码加密 密文 存储在数据库中
                user.setPassword(PassUtils.aesenc(key,user.getPassword()));
                //5.操作数据库 存储数据
                if(dao.add(user)>0){
                    //成功
                    return R.ok();
                }
            }
        }
        return R.fail();
    }
}
